/**
 * UFCG - CEEI - DSC- SI1
 * Projeto da Disciplina Sistema de Informacao 1 - 2011.1
 * 
 * Professor: Hyggo Almeida
 * 
 * Alunos: Felipe de Sousa - felipeso@lcc.ufcg.edu.br
 * 		   Matheus Sampaio - matheusss@lcc.ufcg.edu.br
 *         Henrique Florencio - henriquecf@lcc.ufcg.edu.br
 *         Claudio Cardoso - claudiocaj@lcc.ufcg.edu.br
 * 		   Julio Henrrique - juliohr@lcc.ufcg.edu.br
 * 
 */

package persistencia;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import exception.ExceptionCanotReadFile;

public class Serializador {

	/**
	 * Metodo usado para salvar os dados no sistema
	 * 
	 * @param nomeArquivo
	 *            um string que represente o nome do arquivo
	 * @param collection
	 *            qualquer objeto que implemente Serializable.
	 */
	public static void salvar(String nomeArquivo, Object collection) {

		try {
			ObjectOutputStream fluxoSaida = new ObjectOutputStream(
					new FileOutputStream(nomeArquivo + ".dat"));

			fluxoSaida.writeObject(collection);

			fluxoSaida.close();

		} catch (Exception e) {

			System.out
					.println("Erro ao recuperar o Arquivo. " + e.getMessage());

		}

	}

	/**
	 * Metodo que recupera os objetos salvos no arquivo
	 * 
	 * @param nomeArquivo
	 *            o nome do arquivo que contem os objetos
	 * @return todo conteudo do arquivo pedido
	 * @throws Exception
	 *             caso nao seja encotrado o arquivo
	 */
	public static Object recuperar(String nomeArquivo) throws Exception {
		Object obj = null;

		try {
			FileInputStream arquivoEntrada = new FileInputStream(nomeArquivo
					+ ".dat");
			ObjectInputStream fluxoEntrada = new ObjectInputStream(
					arquivoEntrada);
			obj = (Object) fluxoEntrada.readObject();

		} catch (FileNotFoundException e) {

			throw new FileNotFoundException(e.getMessage());
		} catch (IOException e) {

			throw new ExceptionCanotReadFile();
		}

		return obj;
	}

}